#include"process.h"
#include<unistd.h>
#include<string.h>

#define NUM 101
#define STYLE '='

//version2
void  FlushProcess(double total, double current)
{
    char buffer[NUM];
    memset(buffer,0,sizeof(buffer));
    const char *lable="|/-\\";
    int len = strlen(lable);

    static int cnt = 0;    //进度条刷新，函数一直在调，进度条要刷新，进度不一定会变
    //不需要自己循环
    //首先要输出多少个＃
    //填充#
    int num = (int)(current*100/total); // 11.0 / 1000
    for(int i = 0; i < num; i++)
    {
        buffer[i] = STYLE;
    }

    double rate = current/total;
    
    cnt %= len;
    printf("[%-100s][%.1f%%][%c]\r",buffer,rate*100,lable[cnt]); //一旦要旋转的话就不能与下载信息有关，而是与函数被调用的次数有关
    cnt++;
    fflush(stdout);
    
}


//单纯一个这个进度条
//无法使用的
//但可以运行

//version1
void process_v1()
{
    char buffer[NUM];
    memset(buffer,0,sizeof(buffer));
    const char *lable="|/-\\";
    int len = strlen(lable);

    int cnt=0;
    while(cnt<=100)
    {
        printf("[%-100s][%d%%][%c]\r",buffer,cnt,lable[cnt%len]);   //或者是\%打印百分号
        fflush(stdout);
        buffer[cnt]=STYLE;
        cnt++;
        usleep(50000);
    }
    printf("\n");

}
